package com.springboot.file.provider.impl;

import com.springboot.file.provider.DocumentProvider;
import org.springframework.stereotype.Component;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;

/**
 * 示例文档处理器实现
 */
@Component
public class SampleDocumentProvider implements DocumentProvider {
    
    private static final String BUSINESS_TYPE = "SAMPLE";
    
    @Override
    public String getBusinessType() {
        return BUSINESS_TYPE;
    }
    
    @Override
    public Map<String, Object> prepareData(Map<String, Object> parameters) {
        Map<String, Object> data = new HashMap<>();
        
        // 添加示例数据
        data.put("title", "示例文档");
        data.put("author", "系统管理员");
        data.put("date", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日")));
        data.put("content", "这是一个使用POI和Documents4j生成的示例Word文档，用于演示模板替换功能。");
        
        // 添加客户自定义的参数
        if (parameters != null && !parameters.isEmpty()) {
            // 客户ID
            if (parameters.containsKey("customerId")) {
                data.put("customerId", parameters.get("customerId"));
            }
            
            // 客户名称
            if (parameters.containsKey("customerName")) {
                data.put("customerName", parameters.get("customerName"));
            } else {
                data.put("customerName", "默认客户");
            }
            
            // 其他自定义参数...
            parameters.forEach((key, value) -> {
                if (!data.containsKey(key)) {
                    data.put(key, value);
                }
            });
        }
        
        return data;
    }
    
    @Override
    public String getTemplateName(Map<String, Object> parameters) {
        // 可以根据parameters中的参数决定使用哪个模板
        return "sample_template.docx";
    }
    
    @Override
    public String getHeader(Map<String, Object> parameters) {
        return "示例文档 - " + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
    }
    
    @Override
    public String getFooter(Map<String, Object> parameters) {
        return "机密文件 - 仅供内部使用";
    }
    
    @Override
    public String getWatermarkText(Map<String, Object> parameters) {
        return "保密文件";
    }
    
    @Override
    public String getWatermarkColor(Map<String, Object> parameters) {
        return "#CCCCCC"; // 浅灰色
    }
    
    @Override
    public boolean showPageNumbers(Map<String, Object> parameters) {
        return true;
    }
} 